package me.ratel.demo.eBook.infrastructure.persistence.hibernate.page;

import java.io.Serializable;
import java.util.List;

/**
 * 列表分页。包含list属性。
 */
public class Pagination<T>
        extends SimplePage<T> implements Paginable<T>, Serializable {

    /**
     * 当前页的数据
     */
    private List<T> list;

    public Pagination() {
	}

	/**
	 * 构造器
	 * @param pageNo 页码
	 * @param pageSize 每页几条数据
	 * @param totalCount 总共几条数据
	 */
	public Pagination(int pageNo, int pageSize, int totalCount) {
		super(pageNo, pageSize, totalCount);
	}

	/**
	 * 构造器
	 * @param pageNo 页码
	 * @param pageSize 每页几条数据
	 * @param totalCount 总共几条数据
	 * @param list 分页内容
	 */
	public Pagination(int pageNo, int pageSize, int totalCount, List<T> list) {
		super(pageNo, pageSize, totalCount);
		this.list = list;
	}

	/**
	 * 第一条数据位置
	 */
	public int getFirstResult() {
		return (pageNo - 1) * pageSize;
	}

	/**
	 * 获得分页内容
	 *
	 * @return
	 */
	public List<?> getList() {
		return list;
	}

	/**
	 * 设置分页内容
	 * 
	 * @param list
	 */
	@SuppressWarnings("unchecked")
	public void setList(List list) {
		this.list = list;
	}
}
